package api;

import java.util.ArrayList;

//基于ArrayList设计思想，自己进行模仿，动手实践simpleArraylist了的编写
/*手写simpleArrayList，为什么要手写呢？
* 第一是理解原理
* 第二是扩展思路（当官方提供的集合不能满足要求是，我们就要进行扩展）
* 第三是建立编写*/
public class SimpleArrayList {
    //模仿ArrayList
    //存储数据
    private Object[] data;
    //用于记录有效元素的个数
    public int  size;
    public SimpleArrayList(){//构造方法，
        data = new Object[16];//数组的初始长度为16
    }
    public void add(Object element){
        //判断容器是否满了，满了就扩容。并拷贝元素
        if (data.length == size){
            Object[] newArray = new Object[data.length*2];
            System.arraycopy(data,0,newArray,0,size);
            data = newArray;

        }
        //存储元素
        data[size] = element;
        //有效元素个数➕1
        size++;
    }
    public int size(){
        return size;
    }
    //增加了一个tostring方法来进行
    @Override
    public String toString(){
        //考虑使用StringBuilder
        StringBuilder builder = new StringBuilder("[");
        for (int i=0; i<size; i++){
            builder.append(data[i]).append(",");
        }
        //删除最后一个“,”
        builder.deleteCharAt(builder.lastIndexOf(","));
        builder.append("]");
        return builder.toString();
    }

    public static void main(String[] args) {
        SimpleArrayList simple = new SimpleArrayList();
        simple.add(10);
        simple.add(10);
        simple.add(10);
        System.out.println(simple);
    }
}
